package handler

import (
	"bysy-gin/libs/errno"
	"github.com/gin-gonic/gin"
	"net/http"
)

/*
统一标准化返回
api接口  --  json
{"code":0,
 "message":"success!",
 "data":{}
}

code: 应用的状态码 -- code设置为0表示成功，其他表示失败
message: 提示信息,对状态码的说明
data: 返回的数据
*/

// 定义数据标准化返回的格式
type Response struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

// 定义返回的函数
func SendResponse(c *gin.Context, code int, message string, data interface{}) {
	//定义返回的数据
	rsp := Response{
		Code:    code,
		Message: message,
		Data:    data,
	}
	//数据序列化  通过标签映射 将rsp结构体以及要返回的数据库对象 转化成json格式
	c.JSON(http.StatusOK, rsp)
}

// 定义返回的函数，加上错误解析  -- 做错误标准化返回
func SendRsp(c *gin.Context, err error, data interface{}) {
	code, message := errno.DecodeErr(err)
	//定义返回的数据
	rsp := Response{
		Code:    code,
		Message: message,
		Data:    data,
	}
	//数据序列化  通过标签映射 将rsp结构体以及要返回的数据库对象 转化成json格式
	c.JSON(http.StatusOK, rsp)
}
